<?php

/**
 * Список системных шаблонов.
 *
 */
class Mail_Backend_Templates_List extends Backend_Component_List
{
    
    /**
     * Описание первичного ключа таблицы.
     *
     * @var mixed
     */
    protected $_key = 'template';
    
    /**
     * Наименования колонок списка.
     *
     * @var array
     */
    protected $_columns = array('subject', 'type');

    /**
     * Проекция наименований полей сортировки на выражения, используемые
     * в SQL-запросе.
     *
     * @var array
     */
    protected $_order_map = array('type' => false);

    /**
     * Формирует запрос выборки записей страницы. Запрос обязательно должен
     * содержать инструкцию SQL_CALC_FOUND_ROWS.
     *
     * @return  string
     */
    protected function _getQueryBody() 
    {
        $query = 'SELECT SQL_CALC_FOUND_ROWS
                         `id`,
                         `id` `template`,
                         `subject`, 
                         LENGTH(`text`) > 0 `text`,
                         LENGTH(`html`) > 0 `html`
                    FROM
                         `' . __postfix('system_template') . '`' . $this->_getOrder();

        return $query;
    }

    /**
     * Оборачивает записи и их общее количество в объект.
     * :TODO: morozov 17032008: эту функцию было бы неплохо перенести в шаблон
     *
     * @param   array   $entries
     * @param   integer $total
     * @return  Kernel_RecordSet
     */
    protected function _wrap($entries, $total) 
    {
        foreach ($entries as &$entry) {
            $type = array();
            foreach (array('text', 'html') as $param) {
                if ($entry[$param]) {
                    $type[] = $param;
                }
            }
            $entry['type'] = implode(' + ', $type);
        }
        return new Kernel_RecordSet($entries, $total);
    }
    
}
